package fr.bludwarf.skywarrior.evenements;

import fr.bludwarf.skywarrior.exceptions.IleInconnueException;
import fr.bludwarf.skywarrior.global.EtatMonde;
import fr.bludwarf.skywarrior.global.Temps;
import fr.bludwarf.skywarrior.global.TimeFactorInconnu;
import fr.bludwarf.skywarrior.ile.Construction;
import fr.bludwarf.skywarrior.ile.EtatIle;
import fr.bludwarf.skywarrior.ile.Ile;

public class TerminerConstruction extends Evenement {
	
	final Construction _construction;

	public TerminerConstruction(EtatIle etat, Construction construction) throws Exception {
		super(construction.getTempsRestant(etat.getEtatMonde()));
		_construction = construction;
	}

	@Override
	public void execute(EtatMonde etat) throws IleInconnueException, TimeFactorInconnu {
		final Ile ile = _construction.getIle();
		final EtatIle etatIle = etat.getEtatIle(ile);
		etatIle.execute(this);
	}
	
	@Override
	public String toString() {
		return String.format("%s terminé sur l'%s en %s",
			_construction.getUnite(),
			_construction.getIle(),
			Temps.formatter(_construction.getDureeReelle())
		);
	}

}
